iT邦幫忙

2023 iThome 鐵人賽

DAY 5
0
自我挑戰組

Python Discord Bot(DC機器人)系列 第 5

Python Discord Bot#5 - 偵測對話功能介紹

  • 分享至 

  • xImage
  •  

如果有看過別人的example 一起上手的人,
一定都知道,
偵測對話功能是幾乎教學都會放的內容。

但如果你是照著我做的,
在加入 @client.event 的on_message 會發現有錯誤,
那是因為我們後台權限是沒有打開的,
以下直接上路。

DC後台讀取訊息權限打開

打開官方後台打開你的目標應用程式,
左側有選單,選擇「Bot」
https://ithelp.ithome.com.tw/upload/images/20230904/20106071qBv8Dvo2Ic.png
拉到下面,有一個Pirvileged Gateway Intents 的設定中,MESSAGE CONTENT INTENT打開 然後保存。
https://ithelp.ithome.com.tw/upload/images/20230904/20106071UjyObmIqeJ.png


修改main.py

在 intents 加入一段,新增讀取訊息權限

intents.message_content = True

然後加入 @client.event

async def on_message(message):
  print(message) # 印出message 內容
  if message.author == client.user: # 排除機器人本身的訊息
    return
  if message.content == 'ping':
    await message.channel.send('pong')

以下為 main.py 全部內容

# 導入 套件
import discord
import os
from dotenv import load_dotenv

# 取得環境設定
load_dotenv()
DISCORD_TOKEN = os.getenv("DISCORD_TOKEN")
# intents
intents = discord.Intents.default()
intents.message_content = True  # NEW 新增要求讀取訊息權限 
# client
client = discord.Client(intents=intents)

# event 事件處理
@client.event
async def on_ready():
  print(f"「{client.user}」已登入")
  
@client.event
async def on_message(message):
  print(message) # 印出message 內容
  if message.author == client.user: # 排除機器人本身的訊息
    return
  if message.content == 'ping':
    await message.channel.send('pong')

if __name__ == "__main__":
  client.run(DISCORD_TOKEN)

如果想要看全部的code的話我放在 實作github
但檔案內容可能有稍微變動 Tag: it_#5

Server重新執行後:
在已經邀請機器人的伺服器傳訊息,就會得到下列結果:
https://ithelp.ithome.com.tw/upload/images/20230904/20106071kbXLzQz5xw.png

而在code中我有加入 print(message) # 印出message 內容

https://ithelp.ithome.com.tw/upload/images/20230904/20106071H8Qm8ohPq5.jpg

以上的訊息就可以區分訊息的來源:
Message 訊息資訊
TextChannel 文字頻道
Member 伺服器成員
Guild 伺服器

詳細項目內容可以查詢discord.py 了解內容
Message.content 檢查消息內容
Message.attachements 檢查郵件附件
Message.embeds 檢查消息嵌入
Message.compents 檢查消息組件

更多可以參考 Message 相關內容


上一篇
Python Discord Bot#4 - 認識與新增.env設定檔
下一篇
Python Discord Bot#6 - 偵測對話的簡單方式與回覆
系列文
Python Discord Bot(DC機器人)31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言